<?php
Yii::import('application.modules.menu.utililies.menuService');

class MaterialrequestController extends ControllerBase
{

        public function init() {
            parent::init();
            $this->defaultAction = 'admin';
        }
        
	/**
	 * Displays a particular model.
	 * @param integer $id the ID of the model to be displayed
	 */
	public function actionView($id)
	{
            $materialreqdetail = Materialrequestdetail::model()->findAll(array(
                'condition' => 'materialrequestid = :id',
                'params' => array(
                    ':id' => $id,
                )
            ));
            
            $mateiralreq = Materialrequest::model()->find(array(
                'condition' => 'materialrequestid = :id',
                'params' => array(
                    ':id' => $id,
                )
            ));
            
            $this->render('view',array(
                'materialreqdetail' => $materialreqdetail,
                'materialreq' => $mateiralreq
            ));
	}

	/**
	 * Creates a new model.
	 * If creation is successful, the browser will be redirected to the 'view' page.
	 */
	public function actionCreate()
	{
		$model=new Materialrequestdetail;

		// Uncomment the following line if AJAX validation is needed
		// $this->performAjaxValidation($model);

		if(isset($_POST['MaterialRequestDetail']))
		{
//                    var_dump($_POST['MaterialRequestDetail']);
                    foreach ($_POST['MaterialRequestDetail'] as $mq => $value){
                        foreach ($value as $k => $v){
                            $quantity = preg_replace('/\\s/', '', $v);
                            if (intval($quantity) != 0){                                
                                //insert into material request
                                $materialreq = new Materialrequest;                                
                                $lastID = Util::generalTableID($materialreq->tableName(), 'materialrequestid');
                                if ($lastID)
                                    $materialreq->materialrequestid = ++$lastID;
                                else
                                    $materialreq->materialrequestid = 0;
                                
                                $materialreq->requestdate = date('Y-m-d', time());
                                $materialreq->autogenerated = 0;
                                $materialreq->approved = 1;
                                $materialreq->save();
                                var_dump($materialreq->getErrors());
                                
                                //insert into material request detail
                                $materialreqdetail = new Materialrequestdetail;
                                $materialreqdetail->materialrequesrid = $materialreq->materialrequestid;
                                $materialreqdetail->materialid = $k;
                                $materialreqdetail->quantity = $quantity;
                                $materialreqdetail->delivered = 0;
                                $materialreqdetail->save(); 
                                var_dump($materialreqdetail->getErrors());
                            }                                
                        }
                    }
		}

                $materialList = Material::model()->findAll();
		$this->render('create',array(
                    'materialList'=>$materialList,
		));
	}

	/**
	 * Updates a particular model.
	 * If update is successful, the browser will be redirected to the 'view' page.
	 * @param integer $id the ID of the model to be updated
	 */
	public function actionUpdate($id)
	{
		$model=$this->loadModel($id);

		// Uncomment the following line if AJAX validation is needed
		// $this->performAjaxValidation($model);

		if(isset($_POST['Materialrequest']))
		{
			$model->attributes=$_POST['Materialrequest'];
			if($model->save()){
                            $this->setMessage('Update Material Request Successful');
                            $this->refresh();
                        }
		}

		$this->render('update',array(
			'model'=>$model,
		));
	}

	/**
	 * Deletes a particular model.
	 * If deletion is successful, the browser will be redirected to the 'admin' page.
	 * @param integer $id the ID of the model to be deleted
	 */
	public function actionDelete($id)
	{
		if(Yii::app()->request->isPostRequest)
		{
			// we only allow deletion via POST request
			$this->loadModel($id)->delete();

			// if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser
			if(!isset($_GET['ajax']))
				$this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin'));
		}
		else
			throw new CHttpException(400,'Invalid request. Please do not repeat this request again.');
	}

	/**
	 * Lists all models.
	 */
	public function actionIndex()
	{
		$dataProvider=new CActiveDataProvider('Materialrequest');
		$this->render('index',array(
			'dataProvider'=>$dataProvider,
		));
	}

	/**
	 * Manages all models.
	 */
	public function actionAdmin()
	{
		$model=new Materialrequest('search');
		$model->unsetAttributes();  // clear any default values
		if(isset($_GET['Materialrequest']))
			$model->attributes=$_GET['Materialrequest'];

		$this->render('admin',array(
			'model'=>$model,
		));
	}

	/**
	 * Returns the data model based on the primary key given in the GET variable.
	 * If the data model is not found, an HTTP exception will be raised.
	 * @param integer the ID of the model to be loaded
	 */
	public function loadModel($id)
	{
		$model=Materialrequest::model()->findByPk((int)$id);
		if($model===null)
			throw new CHttpException(404,'The requested page does not exist.');
		return $model;
	}

	/**
	 * Performs the AJAX validation.
	 * @param CModel the model to be validated
	 */
	protected function performAjaxValidation($model)
	{
		if(isset($_POST['ajax']) && $_POST['ajax']==='materialrequest-form')
		{
			echo CActiveForm::validate($model);
			Yii::app()->end();
		}
	}
        
        public function actionApproveRequest($id){
            $materialreq = Materialrequest::model()->findByPk($id);
            $materialreq->approved = 1;
            $materialreq->update();
            
            $this->redirect(CController::createUrl('admin'));
        }
        
        public function actionAlertIncomingRequest(){
            $materialreq = Materialrequest::model()->findAll(array(
                'condition' => 'approved = 0',
            ));
            
            if (count($materialreq)){
//                echo CHtml::image(Yii::app()->theme->baseUrl."/images/alert.ico", 'Request Material', array());
                echo 1;
            }else echo 0;
        }
}
